/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年7月25日
 * 项目： rainhy-minitools
 */
package com.rainhy.minitools.sudoku;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

/**
 * 井字格
 * 
 * @author rain
 * @version [版本号, 2016年7月25日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class Well implements Serializable {
    private static final long serialVersionUID = -5647781963326353403L;
    
    /** 井字格 行号(y) */
    private final int xWell;
    
    /** 井字格 列号(x) */
    private final int yWell;
    
    /** 棋盘(全部格子)(x,(y,grid)) */
    private final Map<Integer, Map<Integer, Grid>> grids = new HashMap<>();
    
    /** 用行号来构建行 */
    public Well(int xWell, int yWell) {
        super();
        this.xWell = xWell;
        this.yWell = yWell;
    }
    
    /** 添加格子 */
    public void init(Grid grid) {
        if (this.xWell == grid.getX() / 3 && this.yWell == grid.getY() / 3) {
            Integer x = Integer.valueOf(grid.getX());
            Integer y = Integer.valueOf(grid.getY());
            if (!this.grids.containsKey(x)) {
                this.grids.put(x, new HashMap<Integer, Grid>());
            }
            this.grids.get(x).put(y, grid);
        }
    }
    
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (Map<Integer, Grid> yWell : grids.values()) {
            sb.append(StringUtils.join(yWell.values(), ",")).append("\r\n");
        }
        return sb.toString();
    }
    
    /**
     * <功能简述><br>
     * <功能详细描述>
     *
     * @param grid
     * 
     * @return void [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     * @version [版本号, 2016年8月1日]
     * @author rain
     */
    public void refresh(Grid grid) {
        // TODO Auto-generated method stub
        
    }
}
